package com.kuson.springcloud.controller;

import com.kuson.springcloud.service.IMessageProvider;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 消息提供端===发送到消息队列中去
 *
 * 消息驱动之生产者
 *
 * 在消费同时订阅一个主题的时候，就会产生消息重复消费的问题。所以可以使用stream中的group分组的方式来避免数据重复消费的问题。
 *分组的原理：
 *   如果我们没有配置这个分组的方式。系统会默认随机生成字符串将消息者分成不同的组。
 *   消费者在同一个组中是存在竞争的关系，所以是将消费在放在同一个组里面进行互斥消费。
 *消息持久化问题：
 *    消息持久化步骤：停止了两个消费者并将其中的一个分组去掉。那么生产者去生产数据
 *      结论：没有分组的那个消费者是消费到生产者生产到的数据。而有分组的那个消费者是可以消费到生产者生产的数据的
 *
 */
@RestController
public class SendMessageController {

    /**
     * 发送消息
     */
    @Resource
    private IMessageProvider messageProvider;
    @GetMapping(value = "/sendMessage")
    public String sendMessage()
    {
        return messageProvider.send();
    }

}
